Data compression has long been used in many environments to reduce the amount of data that must be handled by various electronic or computerized systems. By compressing a data signal, the size of the symbol stream used to represent the data is reduced, resulting in a lower demand on the system. Various system stages, such as processing, storage, and communication, can all handle less data in various applications, resulting in more efficient operation.
Data such as audio and images are particularly well-known applications for compression. DVD discs store compressed audio and video, but would be unable to contain an entire typical movie without the use of compression of the stored audio and video. Digital compression methods are also used to broadcast digital and high-definition television, reducing the amount of data that must be transmitted over the air or over cable for each channel. This enables a reduction in bandwidth used to transmit each channel, allowing a greater number of channels to be sent.
Compression is used not only for consumer products, but is also employed in commercial applications where similar storage and transmission concerns are present. These applications often use compression methods that are lossless, or where the compressed data can be recovered exactly the same as it was before compression, to ensure that content-critical data such as satellite images or text data are decompressible to recover exactly the original data. Exact reproduction of the original is less critical for many consumer applications, such as DVD discs, which store video and some audio using lossy compression methods that sacrifice the ability to recover some detail for greater compression.
The Rice compression algorithm is one example of a lossless compression algorithm suitable for lossless compression of certain types of data. It was developed in part by Robert Rice, and is a special case of Golomb coding, which comprised concatenation of unary and binary representations of the same symbol, based in part on a coefficient that could be optimized for the expected distribution of data. By restricting these coefficients to powers of 2, Rice coding greatly simplifies the coding process, resulting in a coding system that can be more efficiently employed in electronic or computerized systems.
The coding process itself takes advantage of the fact that change from element to element of certain types of data such as video image data is typically very small. By encoding these small but frequently occurring changes using code symbols that are small relative to the original data symbol size, lossless compression of the data can be achieved. Because Rice compression algorithms are particularly well suited to compression of image data, the algorithm has been implemented in many environments where lossless compression of images is needed, such as in satellite communication of image data, and in the JPEG-LS (Joint Photographic Experts Group—Lossless Standard) algorithm for computerized compression of image data.
Although it is useful to have an algorithm that can be coded into software and executed on a computer for image compression, such a general-purpose computer solution is not an optimal solution for dedicated systems such as satellite communications or high-performance applications in which speed, power consumption, and physical size are concerns.